查看原文
其他

逻辑回归,很有逻辑

石川 川总写量化 2019-07-12

1

逻辑回归分类器


逻辑回归由统计学家 David Cox 于 1958 年提出。与传统的线性回归不同,逻辑回归(logistic regression)中响应变量(因变量)的取值不是连续的,而是离散的,每个取值代表一个不同的类别。因此,逻辑回归的本质是一个分类器(classifier)。它是一种有监督学习,通过训练集数据中的样本的特征向量 x 和标签 y(即响应变量的类别)来训练模型的参数,并使用该模型对未来的新样本进行分类。


最简单的逻辑回归中响应变量是二分类的(binary),即它仅仅可以取两个值,代表不同的两类。按照惯例,它的取值为 0 和 1。即便是最简单的模型也有广泛的应用,比如这两类可以代表着比赛中的输和赢、考试中的通过和失败、医疗领域的健康和生病、以及股市中的涨和跌等。如果响应变量的取值多于两类,则这样的问题叫做多项逻辑回归(multinomial logistic regression)


本文以最简单的二元逻辑模型(binary logistic model,即响应变量 y 只能取 0 和 1 两个值)为例,介绍逻辑回归的数学含义以及它在量化选股中的应用。本文的最后会简单谈一谈求解多项逻辑回归——即 Softmax 回归——以及它在卷积神经网络中的应用。


下文中如无特殊说明,当我们提到“逻辑回归”时,指代的都是最简单的二元逻辑回归。


2

数学意义


在二元逻辑回归中,回归模型根据样本点的特征(features)计算该样本点属于每一类的条件概率。在数学上,通过给定的函数将样本点的 n 维特征向量 x 转化成一个概率标量。具体的,具备特征向量 x 的样本点属于 1 和 0 两类的条件概率为:



其中,函数 σ(z) ≡ 1 / (1 + exp(-z)) 被称为逻辑函数(logistic function)sigmoid 函数(因为 σ(z) 形如 S 曲线);它的取值范围在 0 和 1 之间。逻辑回归的目的是通过训练集数据找到最优的权重 w 使得分类结果尽量同时满足如下目标:


当一个样本点的真实分类是 1 时,h_w(x) 尽可能大;


当一个样本点的真是分类是 0 时,h_w(x) 尽可能小(即 1 - h_w(x) 尽可能大)。


逻辑回归将样本点的特征向量 x 按照权重 w 进行线性组合得到标量 z,再将 z 放入逻辑函数 σ(z) 最终求出该样本点属于类别 1 以及 0 的概率,从而对其进行分类——如果 h_w(x) > 1 - h_w(x) 则该样本点被分为类别 1,反之为类别 0。


如何决定权重 w 呢?


假设训练集共有 m 对儿数据 {(x_i, y_i), i = 1, 2, …, m},为了尽量同时实现上述目标,定义 cost function 如下:



使用训练集数据训练模型的参数 w 以使上述 cost function 最小化。对于训练集中的每一个样本点,上述方程的两项中有且仅有一个不为 0。对于第 i 个样本点,如果 y_i = 1,则最小化上述方程意味着最大化 h_w(x_i),即最大化该点被分类为 1 的概率;同理,如果 y_i = 0,则最小化上述方程意味着最大化 1 - h_w(x_i),即最大化该点被分类为 0 的概率。


从上面的论述可知,J(w) 同时考虑了 1 和 0 两类分类的准确性。使用训练集对该模型训练,找到最优的w,使得 J(w) 最小,这就是逻辑回归模型的学习过程。一旦确定了模型参数,就可以使用它对新的样本进行分类。对于新的样本点特征向量 x’,如果h_w(x’) > 0.5,则该点被分到 y = 1 类;反之被分到 y = 0 类。最优化 J(w) 可以采用梯度搜索(gradient search),为此只需要计算出J的梯度 ∇J(w),在此不再赘述。


最后值得一提的是,在计算特征向量的线性组合时,往往会额外考虑一个截距项。这相当于在原始 n 维特征向量 x 中加入一个元素 1(因此特征向量变为 n+1 维),而x的线性组合也因此变为:



当然,这个截距项不是必须的。使用者可以根据待解决的问题判断是否应该在特征向量中加入该项。流行的统计分析工具(比如 Python 的 sklearn)允许使用者自行决定是否在模型中加入截距项。


3

一个例子


让我借用 Wikipedia 上面的例子来说明逻辑回归的应用。


这是一个关于学习时间和考试通过与否的例子。假设一共有 20 名学生(样本点),特征向量为截距项 1 和学习时间组成的二维向量。考试结果分为 1(通过)和 0(失败)。我们采用逻辑回归来建立考试时间和通过与否之间的关联。训练集数据如下:



使用训练集数据建模,得到的逻辑回归模型参数(特征向量的权重):


学习时间的权重为:1.5046

截距项的权重为:-4.0777


从模型参数可以看出,是否通过考试和该学生的努力程度(学习时间)是正相关的,这符合人们的预期。将模型参数带入到 sigmoid 函数中便可计算出给定学习时间下考试通过的概率:



使用该模型便可以对新的考生是否通过考试进行判断。将训练集中的 20 名考生的学习时间带入到上式可绘制图这个 sigmoid 函数(确实形如 S 曲线):



4

使用逻辑回归选股


经过上面的介绍,我们已经对逻辑回归的原理和它的应用有了一定的认识。下面就来将它应用于量化投资相关的领域——选股。


为说明这一点,使用股票的因子作为特征向量,使用股票的涨跌强弱作为响应变量,建立逻辑回归模型来选股。


本实验中,以中证 500 的成分股为例。特别的,考虑 2016 年 12 月 31 日时这 500 支成分股的最新截面因子数据。考察的十个因子包括:EP、BP、ROE、Liability/Asset、规模、换手率、动量、反转、市场 β、残差波动率。


由于选股的目的是使用因子来对未来的收益率做预测,因此我们使用这 500 支成分股在 2017 年 1 月份的收益率作为响应变量的原始数据。由于在二元逻辑回归中,响应变量必须是二元的,因此我们需要将这 500 支个股的绝对收益率转换成 0 和 1。为此,可以有以下几种方法:


1. 使用绝对收益率的涨跌为依据:个股的收益率大于 0 则分到 1 类;收益率小于 0 则分到 0 类;

 

2. 使用相对市场收益率的涨跌为依据:由于个股和市场十分相关,而且它们都以不同的程度暴露于市场风险之中,因此考虑个股收益率与中证 500 指数收益率的大小关系。个股收益率大于指数收益率则分到 1 类;个股收益率小于指数收益率则分到 0 类。

 

3. 使用个股之间的相对强弱为依据:直接考察个股之间的收益率的相对大小,将收益率处于中位数之上的个股分到 1 类;将收益率处于中位数之下的个股分到 0 类。


在量化选股中,为了对冲掉市场风险,往往希望判断股票的相对强弱。实验中采用上述的第三种方法将股票的收益率转化为二元响应变量。


训练集数据准备就绪,便可以训练回归模型。假设特征向量中不考虑截距项,得到的回归模型参数如下。



由于实验中仅仅使用了一期的截面数据,因此解释这些因子权重的符号并没有太大作用。不过我们还是可以看出,收益率和 BP 以及 ROE 成正比。有意思的是,收益率和 β 成反比。这似乎说明市场更加青睐小β的蓝筹股。想更系统的分析每个因子对于选股的作用,需要使用多期数据同时在时间和截面两个维度进行逻辑回归。


接下来看看在这个简单的实验中,逻辑回归模型对样本内数据的分类正确性。预测的正确性必须从准确率和召回率两方面同时评价。假设我们预测一共有 X 支股票上涨,其中有 A 支猜对了、B 支猜错了;我们预测一共有 Y = (500 - X) 支下跌,其中有 C 支猜错了、D 支猜对了。则这两个指标的定义为:



准确率衡量的是在所有你猜测的某一类(涨或跌)样本中,有多少是正确的;而召回率是用来衡量在所有某一类的(涨或跌)样本中,有多少被你猜出来了。


对于实验中的这个逻辑回归模型,它的正确性如下:


猜涨准确率:68.8%

猜涨召回率:66.7%

猜跌准确率:62.4%

猜跌召回率:65.5%


仅从这些数字上来看,似乎效果还不错。但是不要忘记,这仅仅是对样本内数据的判断结果(模型就是用它们来构建的);这些不说明样本外的预测准确性。


通过这个例子,仅仅想说明利用逻辑回归可以进行量化选股。因此,我们的例子止于此。在真正应用中,正如前文提到的,应该使用多期在时间和截面两个维度的样本数据建模,并采用交叉验证来评价模型在样本外的分类准确性,以此最终确定模型的参数。


5

逻辑回归、Softmax 回归和卷积神经网络


最后,简单谈谈逻辑回归、Softmax 回归和卷积神经网络的关系。


先来说说神经网络(neural networks),它由多个、多层神经元(neuron)构成,每个神经元就是一个计算单元(见下图),由输入特征、输出值、以及激活函数构成:



在这个例子中,x_1、x_2、x_3 和截距项 1 就是输入的特征,h_w(x) 就是输出,而逻辑回归中的 sigmoid 函数就是一种常见的激活函数(其他常见的激活函数包括 tanh 函数和 max 函数等)。


再来看看 Softmax 回归。它是一种多项逻辑回归,即响应变量的取值大于两类。假设共有 K > 2 类,每个样本点的响应变量 y_i 的取值为 1 到 K 之间的某一个值。多项逻辑回归的应用更加广泛,比如在手写数字识别中,一共有 0 到 9 是个数字,因此一共可以有 10 类。


将二元逻辑回归的数学含义延伸易知,在 Softmax 回归中我们希望计算出样本点在其给定的特征向量下,属于每一类的条件概率:



其中 θ^(1),θ^(2),……,θ^(K) 为模型的参数,通过训练集数据训练得到。与二元逻辑回归类似,定义 cost function 如下:



其中 1{} 为指示函数,当 {} 中的条件为真时,它的取值为 1,否则为 0。通过最小化这个目标函数就可以得到最优的参数 θ^(1),θ^(2),……,θ^(K)。求解时同样可以采用梯度搜索法。


Softmax 回归往往作为卷积神经网络(Convolutional Neural Network)的最后一步。卷积神经网络是在神经网络上发展出来的,可以被用来进行图像识别的强大工具。传统神经网络在面对高像素的图像进行识别时无能为力,这是因为高像素对应的特征数巨大,远超过计算机可以承受的范围;此外巨大的特征也使得特征矩阵非常稀疏。卷积神经网络通过卷积计算对原始的特征进行高度的抽象,通过局部感知和参数共享大大的减少了特征数。此外,它通过使用多层卷积以及池化等手段,进一步抽象特征,最终得到原始图像的高度提炼的信息。而在最后一步,使用这个高度抽象的信息对图像进行分类(识别),计算它属于不同类别的概率。在实际应用中,图像的类别往往成百上千,甚至更多,这便要用到 Softmax 回归。


上面的介绍说明掌握逻辑回归是学习神经网络的基础。更加详细的介绍超出本文的范畴,推荐读者自行阅读相关资料。



参考文献

https://en.wikipedia.org/wiki/Logistic_regression

http://ufldl.stanford.edu/tutorial/supervised/SoftmaxRegression/



    您可能也对以下帖子感兴趣

    文章有问题?点此查看未经处理的缓存